The current generation of compilers are capable of optimizing application binary files for either size or speed. In other words, the complier can be directed to make an executable image that is as small as possible or as fast as possible. The speed versus size of a program is a classic and well understood tradeoff in computer science.
Current compiler optimization, whether for speed or size, does not take into account which specific features of an application are most likely to be used when the program is run. In fact, compilers have no notion of high level application features at all. Thus, the optimizations have limited direct user benefit. Although it is somewhat useful for the application to be as small as possible, or as fast as possible overall without regard to specific feature performance, such optimizations are not calibrated to the ways in which users interact with the resulting programs when they are run in the field.
It would be desirable to be able to compile and otherwise configure applications in a manner without these shortcomings.